The present invention relates generally to locating errors in computer programs and, more particularly, to debugging processes, systems and articles of manufacture employing screen pattern recognition functionalities linked in the context of a debugger environment.
Software bugs generally cause unexpected results during the execution of a computer program and are normally attributable to coding errors. Debugging is performed for locating, correcting or bypassing the located bugs in a computer program code. In this regard, debugging programs are routinely run by the programmer for determining the presence of such bugs; especially during creation of the program. A conventional operation performed by a debugger application is the establishment of breakpoint modes. In a breakpoint mode, operation of the software program is halted, whereby a programmer can step through successive lines of code usually commencing at the breakpoint for conducting analyses into the causes of bugs for purposes of correcting them.
A programmer who uses known debug technology to determine where a problem or bug is occurring, should have some knowledge of the program to know where the problem is occurring in order to know where to start the debugging process. However, that may not be the case and if programmers do not have this knowledge, they often find themselves stepping through the program at a fairly high level looking for a call that produces the undesired effect. Thereafter, the programmer reproduces the problem, but now can set a debug breakpoint before the call that produced the problem on the previous run. After hitting the new breakpoint, the programmer can step into the second call and then step through the routine, stepping over calls until the undesired effect occurs again. At this point, the process is repeated until the programmer can locate the source of the problem for effecting the desired changes. It will be appreciated that the foregoing process is highly repetitive and, therefore, relatively time consuming especially when considering complex programs. Moreover, in conventional debugging if execution of the program is halted for every hit of a breakpoint, the amount of time spent debugging increases for relatively large programs wherein the hit may occur thousands of times before the problem manifests itself.
Without the ability to relatively quickly debug programs, especially complex programs in a manner that quickly navigates to points of interest as well as obviates the excessive halting of the program at repetitive breakpoints unrelated to breakpoints of interest, the true potential of debugging is not entirely realized.